home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / Graphics / PostScript / Scott / stretch.ps < prev    next >
Text File  |  1995-06-12  |  3KB  |  110 lines

  1.  
  2.  
  3. %% stretch.ps
  4. %%
  5. %% Written April 29, 1990,
  6. %% Scott Hess
  7. %% NeXT Campus Consultant
  8. %% Gustavus Adolphus College
  9. %% St. Peter, Mn    56082
  10. %% scott@gacvax1.bitnet
  11. %%
  12. %% This program is a _slight_ modification of the melt program.  Can you find
  13. %% the change?  No fair using an automated utility!
  14.  
  15. %% This file may be installed so that the Scene application will bring it up
  16. %% under the Movies menu.  To do this, create a directory within the
  17. %% /NextLibrary/Images/Scene_movies directory named stretch.movie.  Inside this
  18. %% directory, place this file, with the name stretch.script.ps.  Then, run
  19. %% Scene, and there you are.  This really belongs in the /LocalLibrary
  20. %% directory, but unfortunately, Scene will not find it there.  Sad, eh?
  21.  
  22. %% This code is freely released into the public domain.  You may cut/paste,
  23. %% slash, rearrange, remove comments, and otherwise mutilate this code
  24. %% with no fear of reprisal from myself.  So, go ahead!  I want to see more
  25. %% screen hacks, people!
  26.  
  27. %% scott
  28.  
  29. %% Grab the Workspace and draw it in the passed window.
  30. /getWorkspace    % window
  31. {
  32.   gstate /dest exch def
  33.   /tempwin 0 0 1120 832 Nonretained window def
  34.   tempwin windowdeviceround
  35.   /tgs gstate def
  36.  
  37.   false tempwin setautofill
  38.   Above 0 currentwindow orderwindow
  39.  
  40.   dest setgstate 0 0 1120 832 tgs 0 0 Copy composite
  41.   tempwin termwindow
  42. } def
  43.  
  44. %% Move a region of the current gstate.
  45. /shift            %% x y w h dx dy
  46. {
  47.   4 index add
  48.   exch 5 index add
  49.   exch
  50.   gstate
  51.   3 1 roll
  52.   Copy composite
  53. } def
  54.  
  55. %% Return after mouseclick accepted.
  56. /waitmouse
  57. {
  58.   { buttondown {exit} if} loop
  59.   { stilldown not {exit} if} loop
  60. } def
  61.  
  62. %% return a random number between the 0 and the integer passed -1.
  63. %% (ie, 100 rand returns  from the range 0..99).
  64. /random
  65. {
  66.   rand exch mod
  67. } def
  68.  
  69. gsave
  70.   %% get a window the size of the Workspace.
  71.   /win 0 0 1120 832 Buffered window def
  72.   win windowdeviceround
  73.  
  74.   currentwindow getWorkspace
  75.  
  76.   %% Move the psuedo-Workspace to the front.
  77.   Above 0 win orderwindow
  78.  
  79.   %% How fast to drop.  Not really needed, now.
  80.   /dropby 1 def
  81.   
  82.   0.0 setgray                %% leave behind Black
  83.     {
  84.       /width 1100 random 20 add def    %% get a width from 20..1119
  85.       /height 416 random 416 add def    %% drop at least half the screen.
  86.       /x 1120 width add random width sub def
  87.       x 0 lt { width x add /x 0 def} if    %% constrain x to screen.
  88.       /drop dropby random 1 add def    %% how much to drop?
  89.       x 0 width height 0 drop neg shift    %% move it.
  90.       flushgraphics
  91.       buttondown {exit} if        %% get out of here if buttondown
  92.     }
  93.   loop
  94.   waitmouse                %% wait for that buttondown.
  95.  
  96.   win termwindow            %% get rid of the window.
  97. grestore
  98.  
  99. Gustavus Adolphus College
  100. %% St. Peter, Mn    56082
  101. %% scott@gacvax1.bitnet
  102. %%
  103. %% This program is a _slight_ modification of the melt program.  Can you find
  104. %% the change?  No fair using an automated utility!
  105.  
  106. %% This file may be installed so that the Scene application will bring it up
  107. %% under the Movies menu.  To do this, create a directory within the
  108. %% /NextLibrary/Images/Scene_movies directory named stretch.movie.  
  109.  
  110.